/**
 * 在解构中使用as const 是 as const的最佳使用场景
 */
function show() {
    var a = 'Jimmy';
    var b = function (ba, bb) { return ba + bb; };
    return [a, b];
}
/**
 * 这时候的 d的类型是 字符串或函数
 *  这就是个问题 d没有办法获取很好的代码提示 另外是执行 d() 编译会报错 因为d有可能是字符串 字符串不能使用函数的执行方式的
 *
 * 这种时候就要使用 断言！！！
 */
var _a = show(), s = _a[0], d = _a[1];
// d(1,3) 会报错 d 有可能是字符串或者函数 所以直接执行d() 编译器会报错
// 接收时使用断言 -- 不推荐
// (d as (x:number,y:number)=> number)(1,4)
/**
 * 最佳使用场景：
 *  在函数返回的时候就 使用 as const 将返回值 转成一个值类型元组
 *  这样返回的元组 第一个就是 字符串 第二个就是函数
 *
 *  这时候再使用解构  获取的第二个参数是从元组中获取的  肯定是和元组一样是函数
 *  我们就获取了非常好的代码提示  同时编译器也不会报错
 */
function show2() {
    var a = 'Jimmy';
    var b = function (ba, bb) { return ba + bb; };
    return [a, b];
}
var _b = show2(), n = _b[0], m = _b[1];
m(5, 6);
